package cn.t.dto.api;

import com.fasterxml.jackson.annotation.JsonAlias;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotEmpty;
import java.util.Date;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class WorkOrderCreateRequestDTO {

    /**
     * 公司ID
     */
    @NotEmpty(message = "公司ID不能为空")
    @JsonAlias(value={"customerCode","companyId"})
    private String companyId;

    /**
     * 工单号
     */
    private String workOrderSn;
    /**
     * 设备ID
     */
    private Long deviceId;
    /**
     * 领用人姓名
     */
    private String name;
    /**
     * 操作人ID，客户的工号
     */
    private String operatorId;
    /**
     * 客户系统流程ID
     */
    private String processId;
    /**
     * 创建人ID, 客户的工号
     */
    @JsonAlias(value={"creatorId","jobNum"})
    private String creatorId;

    private Integer status;

    /**
     * 操作物料信息
     */
    @JsonAlias(value={"items"})
    private List<WorkOrderCreateItem> planData;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 截止时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date expireDate;

    /**
     * 备注
     */
    private String remark;

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class WorkOrderCreateItem {
        /**
         * sku号
         */
        private String sku;
        /**
         * 客户物料号
         */
        @JsonAlias(value={"customerSku"})
        private String itemId;
        /**
         * 数量
         */
        @JsonAlias(value={"planQty"})
        private Long qty;
    }

}
